Skip to content

Support the Lingbao M5 Pro (PAW3395) - #6

Open
phunb3101 wants to merge 1 commit into
OpenMouse-Project:mainfrom
phunb3101:feat/lingbao-m5-pro
Open

Support the Lingbao M5 Pro (PAW3395)#6
phunb3101 wants to merge 1 commit into
OpenMouse-Project:mainfrom
phunb3101:feat/lingbao-m5-pro

Conversation

@phunb3101

Copy link
Copy Markdown

Surfaces the Lingbao M5 Pro (PixArt PAW3395) in the app.

Depends on the matching @openmouse/protocol change that adds
LingbaoHidClient — merge that first, or this builds against a driver that
does not exist yet.

Changes

  • native-hid/brands.ts — VID 0x3151 now tries LingbaoHidClient before
    FantechHidClient. 0x3151 is the MicLink/mlzn ODM vendor id, shared by
    Lingbao and Fantech, and the M5 Pro answers on the identical 0xFFFF/0x02
    interface while needing a 2.4G relay handshake and a checksum the Fantech
    driver has no notion of. probeInterface() already falls through to the next
    candidate when readStatus() rejects, so Fantech hardware is unaffected.
  • lib/supported-mice.ts — lists the M5 Pro on the supported-devices page.
  • pages/OverviewPage.tsx — DPI, polling rate and battery chips for the
    brand. Battery is included because it comes from the receiver's own status
    command, so it is a real reading rather than a capability guess.

What the driver reports

Read live from a real M5 Pro receiver: DPI stages 400/800/1600/3200/6400/26000
with stage 2 active, 8000 Hz, battery 44%, firmware v3.03.

Note the receiver is an 8 kHz part, which is worth knowing because Lingbao's
own spec sheet for the base M5 Pro says 1000 Hz. The hardware, GearHub's device
table, and a second bitmask-encoded rate register all agree on 8000.

When the mouse is asleep — it drops off the receiver after a few idle minutes —
the driver reports that specifically ("no mouse is linked … move the mouse and
try again") rather than showing a device with empty settings.

🤖 Generated with Claude Code

VID 0x3151 is the MicLink/mlzn ODM vendor id, shared by Lingbao and
Fantech. The Lingbao M5 Pro answers on the same 0xFFFF/0x02 interface as
Fantech's mice but needs a 2.4G relay handshake and a checksum
FantechHidClient has no notion of, so it goes first in the candidate list
for that vendor id; probeInterface() falls through to Fantech when
LingbaoHidClient.readStatus() rejects.

Lists the M5 Pro on the supported-devices page, and gives it DPI, polling
rate and battery chips — battery comes from the receiver's own status
command, so it is a real reading rather than a capability guess.

Needs the matching @openmouse/protocol change that adds the driver.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant